package com.nineclock.sign.service;

import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.support.ExcelTypeEnum;
import com.nineclock.common.entity.PageResult;
import com.nineclock.common.utils.DateTimeUtil;
import com.nineclock.sign.dto.SignDepDTO;
import com.nineclock.sign.dto.SignUserDTO;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.List;
import com.nineclock.sign.dto.SignUserListDTO;
import com.nineclock.sign.excel.SignExcelMember;
import com.nineclock.system.dto.SysCompanyUserDTO;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

public interface SignService {

    /**
     * APP: 获取当前用户当天签到次数
     * Tag ：王炳涛
     * 接口路径：GET/sign/getDayCount
     */
    Integer getDayCount();

    /**
     * PC: 查询签到列表
     * Tag ：王子
     * 接口路径：GET/sign/sign
     */
    PageResult<SignDepDTO> sign(Long page, Long pageSize, String startTime, String endTime);
    /**
     * APP: 获取团队员工打卡列表
     * Tag ：黄佳洋
     * 接口路径：GET/sign/listSignAllUser
     */
    List<SignUserListDTO> listSignAllUser(String dateStr);
    /**
     * PC: 导出签到列表
     * Tag ：王子
     * 接口路径：GET/sign/export
     */
    void export(String startTime, String endTime) throws IOException;

    /**
     * 签到报表发邮件
     * @param companyId
     * @return
     */
    String generatePunchReport(Long companyId);


    /**
     * APP: 签到
     * Tag : 杨定康
     * 接口路径：POST/sign/insert
     */
    void sign(SignUserDTO signUserDTO) throws FileNotFoundException;

    /**
     * APP: 查询本月签到记录
     * Tag ：王炳涛
     * 接口路径：GET/sign/pagingSignCurrentUserByMonth
     */
    List<SignUserDTO> pagingSignCurrentUserByMonth(String dateStr);
    /**
     * PC-直接导入员工签到数据
     * Tag : 王子
     * 接口路径：POST/sign/uploadExcel
     */
    void importData(MultipartFile excelFile) throws IOException;
    /**
     * PC-处理导入excel数据
     * Tag : 王子
     * 接口路径：POST/sign/uploadExcel
     */
    void handleParsedData(List<SignExcelMember> memberList,Long companyId);
}
